sequenceDiagram
  autonumber
  participant app as 地上铁app
  participant node as node聚合服务
  participant user as 用户中心
  participant goods as 商品中心
  participant goodsCenter as 商品中心-core
  participant activity as 活动中心
  participant mocha as 摩卡平台
  participant trade as 交易中心

  app ->> node: 商品列表查询
  note over app,node: GET /v2/rental/goods/list

  node ->>+ mocha: 获取摩卡商品列表
  note over node,mocha: GET /outapi/commodity/list<br/>cityCode, orderby, car_model_group, page, limit
  mocha -->>- node: goods.list, goods.count

  node ->>+ user: 获取用户会员ID
  note over node,user: GET /userToken
  user -->>- node: memberId

  node ->>+ goods: 获取用户标签
  note over node, goods: POST /out/mk/goods/label/getLabelUserVoIfPresentNormal<br/>userId, labelUse, needDefault
  goods -->>- node: labelCode

  alt 商品列表不为空
    node ->>+ goods: 车辆商品租期系数查询
    note over node, goods: POST /out/sales/getGoodsSalesTenancy<br/>requestValid, tenancyType, goodsIds
    goods -->>- node: tenancys[]

    node ->>+ goods: 车辆商品关联套装查询
    note over node, goods: POST /out/goodsManage/getGoodsPackageRelation<br/>relationGoodsIds
    goods -->>- node: packageList[]

    node ->>+ goodsCenter: 客群隔离过滤
    note over node, goodsCenter: POST /out/goodsManage/getBaseGoodsList<br/>goodsIds, goodsQueryLabelConfig
    goodsCenter -->>- node: filterPackageList[]

    node ->>+ goods: 套装商品价格查询
    note over node, goods: POST /out/price/getBusGoodsPriceList<br/>filterOnShelf, shelfChannel, goodsIdAndCityQueryList
    goods -->>- node: packagePriceList[]

    alt filters.length > 0
      node ->>+ goods: 套装商品活动匹配
      note over node, goods: POST /out/activity/getGoodsActivityMatched<br/>actChannel, activityTypeList, activityMatchStdParamFilter
      goods -->>- node: activities[]
    end

    node ->>+ trade: 价格计算
    note over node, trade: POST /valuation/priceCalc<br/>type, goodsValuationDTOS
    trade -->>- node: priceList.goodsValuationVOS[]
  end

  node -->> app: 返回商品列表数据
  note over node,app: {count, list: [goods_id, goods_shelf_id, comboId, ...]}
